﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HNG.Portal.BLL;
using HNG.Portal.DAL;
using HNG.Portal.DAL.EntityClasses;
using HNG.Portal.DAL.FactoryClasses;
using HNG.Portal.DAL.HelperClasses;
using SD.LLBLGen.Pro.ORMSupportClasses;
using System.Data;
using System.Web.Security;
using HNG.LIB.Localization;
using HNG.LIB.Common;
public partial class AdminPortal_Login : System.Web.UI.Page
{
    TblThanhVienManager _TblThanhVienManager = new TblThanhVienManager();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {           

            txtUserName.Focus();
            string varLog = "";
            try { varLog = Request.QueryString["Log"].ToString().Trim(); }
            catch { varLog = ""; }
            if (varLog.ToString() == "out")
            {
                Session[Constants.SessionTenDangNhap] = null;
                Session[Constants.SessionMatKhau] = null;
                Session[Constants.SessionUserId] = null;
                HttpCookie _cookie = Request.Cookies["InfoLogin"];
                if (_cookie != null)
                {
                    _cookie.Expires = DateTime.Now.AddDays(-1d);
                    Response.Cookies.Add(_cookie);
                }
            }           

        }
    }
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        string sUserName = "";
        string sPassword = "";
        try
        {
            sUserName = (string)txtUserName.Text.Trim();
            sPassword = (string)txtPass.Text.Trim();
        }
        catch
        {
            sUserName = "";
            sPassword = "";
        }
        sUserName = HNG.LIB.Common.Config.CheckSQLInject(sUserName);
        sPassword = HNG.LIB.Common.Config.CheckSQLInject(sPassword);

        KiemTraNhap(txtUserName.Text + "", LocalizationUtils.MaHoaMatKhau(txtPass.Text).Trim());
        //string sUserName = "";
        //string sPassword = "";
        //try
        //{
        //    sUserName = (string)txtUserName.Text.Trim();
        //    sPassword = (string)txtPass.Text.Trim();
        //}
        //catch
        //{
        //    sUserName = "";
        //    sPassword = "";
        //}

        //sUserName = HNG.LIB.Common.Config.CheckSQLInject(sUserName);
        //sPassword = HNG.LIB.Common.Config.CheckSQLInject(sPassword);

        //if ((sUserName != "") && (sPassword != ""))
        //{
        //    sPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(sPassword, "sha1");
        //    EntityCollection _EntityCollectionGetUser = _TblThanhVienManager.SelectByUser_Pass(sUserName, sPassword);
        //    TblThanhVienEntity _TblThanhVienEntity = new TblThanhVienEntity();
        //    try { _TblThanhVienEntity = (TblThanhVienEntity)_EntityCollectionGetUser[0]; }
        //    catch { _TblThanhVienEntity = null; }
        //    if (_TblThanhVienEntity == null)
        //    {
        //        trTB.Visible = true;
        //        lblThongBao.Text = "Không tồn tại username và password này";
        //    }
        //    else
        //    {
        //        System.Web.Security.FormsAuthentication.RedirectFromLoginPage(_TblThanhVienEntity.TenTruyCap, RememberLogin.Checked);
        //        HNG.LIB.Securities.SecurityUtils.SetCurrentUser(_TblThanhVienEntity);
        //        Response.Redirect(ResolveUrl("~/AdminPortal/Default.aspx"));
        //    }
        //}
        //else
        //{
        //    trTB.Visible = true;
        //    lblThongBao.Text = "Bạn cần nhập đủ thông tin Username và Password";
        //}

    }

    private void KiemTraNhap(string TenDangNhap, string MatKhau)
    {
        DataTable dtb = _TblThanhVienManager.StoreToDataTable(TenDangNhap, MatKhau);
        int num = 0;
        if (dtb.Rows.Count > 0)
        {
            num = int.Parse("0" + dtb.Rows[0][0]);
            switch (num)
            {
                case 0: // Khai báo Session cho phép đăng nhập
                    if (chkStoreInfo.Checked)
                    {
                        SetCookieInfoLogin(txtUserName.Text.ToString().ToLower(), LocalizationUtils.MaHoaMatKhau(txtPass.Text));
                    }

                    Session[Constants.SessionTenDangNhap] = txtUserName.Text.ToString().ToLower();
                    Session[Constants.SessionMatKhau] = LocalizationUtils.MaHoaMatKhau(txtPass.Text);                    
                    Response.Redirect(ResolveUrl("~/AdminPortal/Default.aspx"));
                    break;
                case 1: //Thông báo tên đăng nhập không tồn tại
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "redirectMe", "showMessageSlide('Lỗi', 'Tên đăng nhập không tồn tại');", true);
                    break;
                case 2: // thông báo sai mật khẩu
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "redirectMe", "showMessageSlide('Lỗi', 'Mật khẩu đăng nhập không đúng!');", true);
                    break;
                case 3: //thông báo TenDangNhap đã bị khóa
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "redirectMe", "showMessageSlide('Lỗi', 'Tên đăng nhập này đã bị khóa!');", true);
                    break;
                case 4: // Thông báo phải đổi mật khẩu và chuyển người dùng đến trang DoiMatKhau.aspx
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "redirectMe", "showMessageSlide'Lỗi','Bạn phải đổi mật khẩu trước khi đăng nhập!');location.href='DoiMatKhau.aspx?userid=" + TenDangNhap + "'", true);
                    break;
            }
        }
        dtb.Dispose();
    }

    // ghi lai user va pass tren may client
    private void SetCookieInfoLogin(string user, string pass)
    {
        HttpCookie _cookie = Request.Cookies["InfoLogin"];

        if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(pass))
        {

            _cookie = new HttpCookie("InfoLogin");

            _cookie.Value = user + "," + pass;

            _cookie.Expires = DateTime.Now.AddDays(30);

            Response.Cookies.Add(_cookie);

        }
    }
}